// pages/mine_detail/zhuce/zhuce.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 省份列表
    provinces: [],
    
    // 城市列表（每个省份对应的城市）
    cities: {},

    // 当前选择的索引
    areaIndex: [0, 0],

    // 当前选中的省份和城市
    selectedProvince: '',
    selectedCity: '',
    // 复选框 默认不选中
    checkboxChecked:false,
    //存储输入框的值
    formData: {
      username:'',
      password: '',
      confirmpassword:'', //确认密码
      nickname:'',
      name: '',
      gender: '男',
      phone:'',
    }
  },

// 处理列变化事件
onColumnChange(e) {
  const { column, value } = e.detail;
  if (column === 0) { // 如果是省份列发生变化
    const province = this.data.provinces[value];
    const cities = this.data.cities[province];
    // 更新城市列和索引
    this.setData({
      'areaList[1]': cities,
      'areaIndex[1]': 0, // 重置城市列为第一个选项
      selectedCity: cities[0], // 更新选中的城市
      'areaIndex[0]': value // 同步省份列的索引
    });
  }
},

// 处理选择器值变化事件
onAreaChange(e) {
  const { value } = e.detail;
  const provinceIndex = value[0];
  const cityIndex = value[1];

  const province = this.data.provinces[provinceIndex];
  const cities = this.data.cities[province];
  const city = cities[cityIndex];

  // 更新选中的省份和城市，并同步索引
  this.setData({
    selectedProvince: province,
    selectedCity: city,
    areaIndex: value // 同步所有列的索引
  });
},
  //表单变化监听
  onInput: function(e) {
    const formData = this.data.formData;
    console.log(e.currentTarget.dataset.name);
    formData[e.currentTarget.dataset.name] = e.detail.value;
    this.setData({
      formData: formData
    });
    // console.log(this.data.formData);
  },
  // 处理性别选择变化的事件
  onGenderChange(e) {
    const selectedGender = e.detail.value; // 获取用户选择的性别值
    console.log('Selected Gender:', selectedGender);
    // 更新页面数据中的性别值
    this.setData({
      'formData.gender': selectedGender
    });
  },

initProvinceCityData: function () {
  const provinceCityData = {
    "北京市": ["北京市"],
  "天津市": ["天津市"],
  "河北省": ["石家庄市", "唐山市", "秦皇岛市", "邯郸市", "邢台市", "保定市", "张家口市", "承德市", "沧州市", "廊坊市", "衡水市"],
  "山西省": ["太原市", "大同市", "阳泉市", "长治市", "晋城市", "朔州市", "晋中市", "运城市", "忻州市", "临汾市", "吕梁市"],
  "内蒙古自治区": ["呼和浩特市", "包头市", "乌海市", "赤峰市", "通辽市", "鄂尔多斯市", "呼伦贝尔市", "巴彦淖尔市", "乌兰察布市", "兴安盟", "锡林郭勒盟", "阿拉善盟"],
  "辽宁省": ["沈阳市", "大连市", "鞍山市", "抚顺市", "本溪市", "丹东市", "锦州市", "营口市", "阜新市", "辽阳市", "盘锦市", "铁岭市", "朝阳市", "葫芦岛市"],
  "吉林省": ["长春市", "吉林市", "四平市", "辽源市", "通化市", "白山市", "松原市", "白城市", "延边朝鲜族自治州"],
  "黑龙江省": ["哈尔滨市", "齐齐哈尔市", "鸡西市", "鹤岗市", "双鸭山市", "大庆市", "伊春市", "佳木斯市", "七台河市", "牡丹江市", "黑河市", "绥化市", "大兴安岭地区"],
  "上海市": ["上海市"],
  "江苏省": ["南京市", "无锡市", "徐州市", "常州市", "苏州市", "南通市", "连云港市", "淮安市", "盐城市", "扬州市", "镇江市", "泰州市", "宿迁市"],
  "浙江省": ["杭州市", "宁波市", "温州市", "嘉兴市", "湖州市", "绍兴市", "金华市", "衢州市", "舟山市", "台州市", "丽水市"],
  "安徽省": ["合肥市", "芜湖市", "蚌埠市", "淮南市", "马鞍山市", "淮北市", "铜陵市", "安庆市", "黄山市", "滁州市", "阜阳市", "宿州市", "六安市", "亳州市", "池州市", "宣城市"],
  "福建省": ["福州市", "厦门市", "莆田市", "三明市", "泉州市", "漳州市", "南平市", "龙岩市", "宁德市"],
  "江西省": ["南昌市", "景德镇市", "萍乡市", "九江市", "新余市", "鹰潭市", "赣州市", "吉安市", "宜春市", "抚州市", "上饶市"],
  "山东省": ["济南市", "青岛市", "淄博市", "枣庄市", "东营市", "烟台市", "潍坊市", "济宁市", "泰安市", "威海市", "日照市", "临沂市", "德州市", "聊城市", "滨州市", "菏泽市"],
  "河南省": ["郑州市", "开封市", "洛阳市", "平顶山市", "安阳市", "鹤壁市", "新乡市", "焦作市", "濮阳市", "许昌市", "漯河市", "三门峡市", "南阳市", "商丘市", "信阳市", "周口市", "驻马店市", "济源市"],
  "湖北省": ["武汉市", "黄石市", "十堰市", "宜昌市", "襄阳市", "鄂州市", "荆门市", "孝感市", "荆州市", "黄冈市", "咸宁市", "随州市", "恩施土家族苗族自治州", "仙桃市", "潜江市", "天门市", "神农架林区"],
  "湖南省": ["长沙市", "株洲市", "湘潭市", "衡阳市", "邵阳市", "岳阳市", "常德市", "张家界市", "益阳市", "郴州市", "永州市", "怀化市", "娄底市", "湘西土家族苗族自治州"],
  "广东省": ["广州市", "深圳市", "珠海市", "汕头市", "佛山市", "韶关市", "江门市", "湛江市", "茂名市", "肇庆市", "惠州市", "梅州市", "汕尾市", "河源市", "阳江市", "清远市", "东莞市", "中山市", "潮州市", "揭阳市", "云浮市"],
  "广西壮族自治区": ["南宁市", "柳州市", "桂林市", "梧州市", "北海市", "防城港市", "钦州市", "贵港市", "玉林市", "百色市", "贺州市", "河池市", "来宾市", "崇左市"],
  "海南省": ["海口市", "三亚市", "三沙市", "儋州市", "五指山市", "琼海市", "文昌市", "万宁市", "东方市", "定安县", "屯昌县", "澄迈县", "临高县", "白沙黎族自治县", "昌江黎族自治县", "乐东黎族自治县", "陵水黎族自治县", "保亭黎族苗族自治县", "琼中黎族苗族自治县"],
  "重庆市": ["重庆市"],
  "四川省": ["成都市", "自贡市", "攀枝花市", "泸州市", "德阳市", "绵阳市", "广元市", "遂宁市", "内江市", "乐山市", "南充市", "眉山市", "宜宾市", "广安市", "达州市", "雅安市", "巴中市", "资阳市", "阿坝藏族羌族自治州", "甘孜藏族自治州", "凉山彝族自治州"],
  "贵州省": ["贵阳市", "六盘水市", "遵义市", "安顺市", "毕节市", "铜仁市", "黔西南布依族苗族自治州", "黔东南苗族侗族自治州", "黔南布依族苗族自治州"],
  "云南省": ["昆明市", "曲靖市", "玉溪市", "保山市", "昭通市", "丽江市", "普洱市", "临沧市", "楚雄彝族自治州", "红河哈尼族彝族自治州", "文山壮族苗族自治州", "西双版纳傣族自治州", "大理白族自治州", "德宏傣族景颇族自治州", "怒江傈僳族自治州", "迪庆藏族自治州"],
  "西藏自治区": ["拉萨市", "昌都市", "山南市", "日喀则市", "那曲市", "阿里地区", "林芝市"],
  "陕西省": ["西安市", "铜川市", "宝鸡市", "咸阳市", "渭南市", "延安市", "汉中市", "榆林市", "安康市", "商洛市"],
  "甘肃省": ["兰州市", "嘉峪关市", "金昌市", "白银市", "天水市", "武威市", "张掖市", "平凉市", "酒泉市", "庆阳市", "定西市", "陇南市", "临夏回族自治州", "甘南藏族自治州"],
  "青海省": ["西宁市", "海东市", "海北藏族自治州", "黄南藏族自治州", "海南藏族自治州", "果洛藏族自治州", "玉树藏族自治州", "海西蒙古族藏族自治州"],
  "宁夏回族自治区": ["银川市", "石嘴山市", "吴忠市", "固原市", "中卫市"],
  "新疆维吾尔自治区": ["乌鲁木齐市", "克拉玛依市", "吐鲁番市", "哈密市", "昌吉回族自治州", "博尔塔拉蒙古自治州", "巴音郭楞蒙古自治州", "阿克苏地区", "克孜勒苏柯尔克孜自治州", "喀什地区", "和田地区", "伊犁哈萨克自治州", "塔城地区", "阿勒泰地区", "石河子市", "阿拉尔市", "图木舒克市", "五家渠市", "北屯市"]

  };
  const provinces = [];
  const cities = {};
  for (const province in provinceCityData) {
    provinces.push(province);
    cities[province] = provinceCityData[province];
  }
  this.setData({
    provinces: provinces,
    cities: cities
  });
},
  //点击注册按钮 进行判断后,存储到数据库
  async enterLoginPage() {
    const formData = this.data.formData;
    // console.log("这是formData", formData);
    // 检查 formData 中的每个字段是否都不为空
    let noNull = true;
    for (let key in formData) {
      if (formData[key] === '' || formData[key] === null || formData[key] === undefined) {
        noNull = false;
        break;
      }
    }
    let pointid = -1;
    if (this.data.checkboxChecked) { // 确保勾选了同意书
      if (noNull) { // 没有空字符串
        if (formData.password === formData.confirmpassword) { // 两次输入密码相同
          try {
            // 存储数据到数据库，使用await等待请求完成
            const userRes = await this.postRequest('http://120.26.112.194:80/api/user/register', {
              userName: formData.username,
              userPassword: formData.password,
              userNickname: formData.nickname,
              userFullName: formData.name,
              userGender: formData.gender,
              userPhoneNumber: formData.phone,
              userAddress: this.data.selectedProvince + this.data.selectedCity,
            });
            if (userRes.data.code === 200) {
              pointid = userRes.data.data;
            }
          } catch (error) {
            console.error('用户注册请求失败：', error);
            return; // 如果注册请求失败，直接返回，不再执行后续添加积分行等操作
          }
        } else {
          console.log("两次输入的密码不同!");
          return; // 密码不一致，直接返回
        }
      } else {
        console.log("请确保输入框不为空");
        return; // 有输入框为空，直接返回
      }
    } else {
      console.log("请勾选同意按钮");
      return; // 未勾选同意按钮，直接返回
    }

    if (pointid === -1) {
      console.log("注册失败");
    } else {
      try {
        // 添加对应的积分行，同样使用await等待请求完成
        const pointsRes = await this.postRequest('http://120.26.112.194:80/api/points', {
          userId: pointid,
          points: 0,
        });
        if (pointsRes.data.code === 200) {
          wx.navigateTo({
            // 跳转到登录页
            url: '../login/login',
          });
          // 每次传完值后清空，使用正确的setData方式更新数据
          this.setData({
            formData: {
              username: '',
              password: '',
              confirmpassword: '',
              nickname: '',
              name: '',
              gender: '男',
              phone: '',
            }
          });
        }
      } catch (error) {
        console.error('添加积分行请求失败：', error);
      }
    }
  },

  // 封装wx.request为Promise形式，方便使用async/await
  postRequest(url, data) {
    return new Promise((resolve, reject) => {
      wx.request({
        url: url,
        method: 'POST',
        data: data,
        success: (res) => {
          resolve(res);
        },
        fail: (error) => {
          reject(error);
        }
      });
    });
  },


  onCheckboxChange(){
    this.setData({
      checkboxChecked:!this.data.checkboxChecked
    })
  },
  returnLoginPage(){
    wx.navigateTo({
      url: '../login/login',
    })
  },
  returnMainPage(){
    wx.reLaunch({
      url: '/pages/mine/mine',
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.initProvinceCityData();
    // 初始化省份列
    this.setData({
      'areaList[0]': this.data.provinces,
      'areaList[1]': this.data.cities[this.data.provinces[0]] // 默认显示第一个省份的城市
    });

    // 初始化默认选中的省份和城市
    this.setData({
      selectedProvince: this.data.provinces[0],
      selectedCity: this.data.cities[this.data.provinces[0]][0]
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})